package com.ruoyi.score.service.impl;

import java.util.List;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ruoyi.keep.domain.OrderDetail;
import com.ruoyi.keep.mapper.OrderDetailMapper;
import com.ruoyi.keep.mapper.OrderMapper;
import com.ruoyi.score.domain.GoodsType;
import com.ruoyi.score.mapper.GoodsTypeMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.score.mapper.GoodsMapper;
import com.ruoyi.score.domain.Goods;
import com.ruoyi.score.service.IGoodsService;

/**
 * 积分商品管理Service业务层处理
 *
 * @author ruoyi
 * @date 2024-08-13
 */
@Service
public class GoodsServiceImpl implements IGoodsService {
    @Autowired
    private GoodsMapper goodsMapper;

    @Autowired
    private GoodsTypeMapper goodsTypeMapper;

    @Autowired
    private OrderMapper orderMapper;

    /**
     * 查询积分商品管理
     *
     * @param id 积分商品管理主键
     * @return 积分商品管理
     */
    @Override
    public Goods selectGoodsById(Long id) {
        Long count = getCount(id);
        Goods goods = goodsMapper.selectGoodsById(id);
        if(goods!=null){
            goods.setCount(count);
        }
        return goods;
    }

    /**
     * 查询积分商品管理列表
     *
     * @param goods 积分商品管理
     * @return 积分商品管理
     */
    @Override
    public List<Goods> selectGoodsList(Goods goods) {
        List<Goods> goods1 = goodsMapper.selectGoodsList(goods);
        if (goods1 != null) {
            for (Goods item : goods1) {
                Long count = getCount(item.getId());
                item.setCount(count);
                item.setGoodsType(goodsTypeMapper.selectGoodsTypeById(item.getGoodsTypeId()));
            }
        }
        return goods1;
    }

    /**
     * 新增积分商品管理
     *
     * @param goods 积分商品管理
     * @return 结果
     */
    @Override
    public int insertGoods(Goods goods) {
        return goodsMapper.insertGoods(goods);
    }

    /**
     * 修改积分商品管理
     *
     * @param goods 积分商品管理
     * @return 结果
     */
    @Override
    public int updateGoods(Goods goods) {
        return goodsMapper.updateGoods(goods);
    }

    /**
     * 批量删除积分商品管理
     *
     * @param ids 需要删除的积分商品管理主键
     * @return 结果
     */
    @Override
    public int deleteGoodsByIds(Long[] ids) {
        return goodsMapper.deleteGoodsByIds(ids);
    }

    /**
     * 删除积分商品管理信息
     *
     * @param id 积分商品管理主键
     * @return 结果
     */
    @Override
    public int deleteGoodsById(Long id) {
        return goodsMapper.deleteGoodsById(id);
    }

    /**
     * 获取兑换数量信息
     *
     * @param id 积分商品管理主键
     * @return 结果
     */
    public long getCount(Long id) {
        QueryWrapper<OrderDetail> wrapper = new QueryWrapper<>();
        wrapper.eq("order_detail_id",id).eq("del",0);
        Integer count = orderMapper.getCount(id);
        if (count == null) {
            count=0;
        }
        return count;
    }
}
